//=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|
// DESCRICAO:
//    Programa que mostra como usar a classe Gnuplot.
//    Mostra como usar as funcoes do Gnuplot 4.0 para ler a posicao do mouse e
//  tambem usar as funcoes membro da classe para encontrar pontos no grafico.
//________________________________________________________
//A.Z. - 12/06 => Criacao.
//=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|=|
#include <iostream>
#include "gauss.h"
#include "gnuplot.h"
#include "readKeyboard.h"
using namespace std;


int main( void ){

  // Cria um conjunto de dados para serem plotados com o Gnuplot
  // Eh uma reta 1x1 com ruido gaussiano (sigma = 1.0)
  MTci N = 30;
  MTvd x(N),y(N),e(N);
  GaussianDistribution gauss;
  for( int i=0; i<N; i++ ){
    x[i] = i;
    e[i] = gauss();
    y[i] = i + e[i];
  }


  // Plota os dados
  Gnuplot gp;
  gp << "set xrange [" << -1 << ":" <<     N+1 << "]" << "\n";
  gp << "set yrange [" << -1 << ":" << 1.1*N+1 << "]" << "\n";
  gp("set bar small");
  gp.plotWith("yerrorbars 3 7");
  gp.plot(x,y,e);


  // Pega a posicao do mouse
  cout << "Clique o mouse em 3 lugares diferentes" << endl;
  for( int i=0; i<3; i++ ){
    if( i>0 ) cout << "\n\nMais uma vez!" << endl;

    double mouse_x,mouse_y;
    gp.getMouse( mouse_x, mouse_y );
    cout << "Mouse x = " << mouse_x
         << "\nMouse y = " << mouse_y << endl;
  }


  // Finaliza
  cout << "Pressione qualquer tecla para encerrar." << endl;
  readKeyboard();


  return 0;
}
